001 /** 002 * Java Gui Builder - A library to build GUIs using an XML file. 003 * Copyright 2002, 2003 (C) François Beausoleil 004 * 005 * This library is free software; you can redistribute it and/or 006 * modify it under the terms of the GNU Lesser General Public 007 * License as published by the Free Software Foundation; either 008 * version 2.1 of the License, or (at your option) any later version. 009 * 010 * This library is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 013 * Lesser General Public License for more details. 014 * 015 * You should have received a copy of the GNU Lesser General Public 016 * License along with this library; if not, write to the Free Software 017 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 018 */ 019 020 package jgb.handlers.swing; 021 022 import org.xml.sax.SAXException; 023 024 import javax.swing.*; 025 import java.util.Map; 026 import java.util.StringTokenizer; 027 import java.util.Vector; 028 029 public class ComboTagHandler extends AbstractControlTagHandler { 030 /** 031 * The name of the choices attribute. 032 */ 033 protected static final String ATTR_CHOICES = "choices"; 034 035 protected void enterElement(Map atts) throws SAXException { 036 ComboBoxModel model = null; 037 if (atts.containsKey(ATTR_CHOICES)) { 038 String choices = atts.get(ATTR_CHOICES).toString(); 039 Vector v = new Vector(); 040 StringTokenizer st = new StringTokenizer(choices, ","); 041 while (st.hasMoreTokens()) { 042 v.add(st.nextToken()); 043 } 044 045 model = new DefaultComboBoxModel(v); 046 } 047 048 JComboBox combo = null; 049 if (model == null) { 050 combo = new JComboBox(); 051 } else { 052 combo = new JComboBox(model); 053 } 054 055 if (atts.containsKey(ATTR_ID)) { 056 putComponent(atts.get(ATTR_ID).toString(), combo); 057 } 058 059 if (atts.containsKey(ATTR_REFLABEL)) { 060 JLabel referrent = (JLabel)getObject(atts.get(ATTR_REFLABEL).toString()); 061 referrent.setLabelFor(combo); 062 } 063 064 if (atts.containsKey(ATTR_SELECTED)) { 065 combo.setSelectedItem(atts.get(ATTR_SELECTED)); 066 } 067 068 pushCurrentControl(combo, (String)atts.get(ATTR_ID)); 069 } 070 071 protected void exitElement() throws SAXException { 072 popCurrentControl(); 073 } 074 075 protected String getDefaultPackagePrefix() { 076 return null; 077 } 078 }